Communications devices have multiple obstacles to the seamless exchange of data. Whether these devices are on Intranets or on the public Internet, various security and addressing devices could disrupt their communication. One device that can disrupt communication is a firewall. While the benefits of a firewall provide a higher security level, arbitrary ports are blocked which increases the possibility of communications interference. Another device that can disrupt the exchange of data is a Network Address Translator (NAT). NATs have the benefit of allowing multiple devices to share the same global IP address, by handing out private addresses behind these devices and masking these private addresses with that shared global address. In this process several assumptions are made that could disrupt data exchange. This can include overlap in private addressing. When applications run on communications devices that make addressing assumptions, the data exchange may not occur as expected, resulting in a poor usability experience.
Network Address Translator (NAT) devices allow multiple users to share the same global IP address. To accomplish this, NATs change addressing information in the packet header. However, NATs can damage end-to-end connectivity because as mentioned above the same private address may be used by multiple physical machines. Thus without some out of band mechanism it is impossible for the application to identify to which computing device the application is attempting to send the traffic. There are many NAT traversal solutions currently available. These solutions typically require that applications implement a customized NAT traversal. Examples of custom NAT traversal approaches include Simple Traversal of UDP through NATs (STUN) and Traversal using Relay NAT (TURN).